package com.shujia.day16.tcp.tcp1;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        /*
            public ServerSocket(int port)
            设置某个端口用于接收数据
            TODO
                服务端的阻塞操作：
                    read方法或者 readLine方法(字符缓冲流) 会形成阻塞
                    注意：
                        当服务端第一次启动之后，read没有接收到数据，那么会进行阻塞状态
                        当客户端发送数据过来后，取消阻塞状态，读取数据，数据读取完成后再进行阻塞
                        直到客户端关闭通道连接(IO流或者Socket) 会导致read取消阻塞状态 继续运行
                对于服务端中的Socket每个Socket都对应一个客户端，同时当没有客户端连接到服务端时，
                    那么该accept函数会处于阻塞状态

         */
        ServerSocket serverSocket = new ServerSocket(6666);
        Socket accept = serverSocket.accept();
        String ip = accept.getInetAddress().getHostAddress();

        InputStream inputStream = accept.getInputStream();
        byte[] bytes = new byte[1024];
        int readLen = 0;
        String message = "";
        // TODO 对于 read 方法会进行线程的阻塞
        while ((readLen = inputStream.read(bytes)) != -1){
            message += new String(bytes,0,readLen);
            System.out.println(ip+":"+message);
        }


//        System.out.println("接收数据...");
//        readLen = inputStream.read(bytes);
//        message += new String(bytes,0,readLen);



//        readLen = inputStream.read(bytes);
//        message += new String(bytes,0,readLen);
//        System.out.println(ip+":"+message);
    }
}
